Method and system for performing data manipulations associated with business processes and operations

ABSTRACT

A method and apparatus for accessing, processing and manipulating data in an OLAP database. According to one aspect, the present invention comprises a user interface configured for accessing, processing and manipulating data in an OLAP cube. According to another aspect, the present invention comprises a calculation engine for manipulating and managing data in the OLAP cube.

FIELD OF THE INVENTION

The present invention relates to computer systems and more particularly,to a method and system for performing data manipulations and dataprocessing associated with financial and/or operational data stored in adatabase.

BACKGROUND OF THE INVENTION

Online analytical processing or OLAP is a technique in businessintelligence applications and comprises providing answers to analyticalqueries that are multidimensional in nature. Examples of OLAPapplications include business reporting for sales, marketing, managementreporting, business process management, budgeting and forecasting,financial reporting and the like.

Databases configured for OLAP applications typically comprise amultidimensional data model, often referred to as a “cube”. Amultidimensional data model allows for complex analytical queries withrapid execution time. The cube structure comprises aspects ofnavigational databases and hierarchical databases.

An OLAP cube can be thought of as an extension of the two-dimensionalarray of a spreadsheet, and comprises dimensions. In the context of anOLAP cube, dimensions provide additional methods for analyzing data. Forexample, an OLAP cube can be configured to allow a company to analyzefinancial data by product, by time-period, by city, by type of revenueand cost, and by comparing actual data with a budget. In a furtheraspect, a user, for example, a financial analyst, may want to view thedata in various ways, such as displaying all the cities down the pageand all the products across a page. This could be for a specifiedperiod, version and type of expenditure. Having seen the data in thisparticular way the analyst might then immediately wish to view it inanother way. The cube structure provides the capability to re-orient thedisplay so that the data displayed now had periods across the page andtype of cost down the page. Because this re-orientation involvedre-summarizing very large amounts of data, this new view of the data hadto be generated efficiently to avoid wasting the analyst's time, i.e.within seconds, rather than the hours a relational database andconventional report-writer might have taken.

According to another aspect, data in a cube may be updated at times,perhaps by different people. Techniques are therefore often needed tolock parts of the cube while one of the users is writing to it and torecalculate the cube's totals. Other facilities may allow an alert thatshows previously calculated totals are no longer valid after the newdata has been added, but some products only calculate the totals whenthey are needed.

It will be appreciated that while an OLAP cube provides a flexible andmultidimensional structure data model, there remains a need in the artfor improvements, such as, applications including data acquisition andprocessing techniques capable of exploiting the capabilities of an OLAPcube.

SUMMARY OF THE INVENTION

The present invention provides a method and system for accessing data,configuring data processing and manipulations involving the data.According to an embodiment, the data comprises information associatedbusiness processes and operations stored in an OLAP database.

According to one aspect, there is provided a system for processing datain an OLAP database, the system comprises: a user interface module; acalculation engine; the user interface comprising a screen configuredfor specifying a data process to be performed on data in the OLAPdatabase in response to one or more user inputs; and the calculationengine being configured to interface to the OLAP database and executethe data process and generate a data process output.

According to another aspect, there is provided a computer-implementedmethod for processing data stored in an OLAP cube, the method comprisesthe steps of: characterizing data in the OLAP cube according to a commondimension, and the common dimension comprising one or more commondimension members; characterizing data in the OLAP cube according to anon-common dimension, and the non-common dimension comprising one ormore non-common dimension members; specifying a combination comprisingselected common dimension members and selected non-common dimensionmembers; selecting cells in the OLAP cube based on the specifiedcombination, and reading data from the selected cells; applying aprocessing operation to the data read from the selected cells; andwriting data from the processing operation back to the OLAP cube.

According to a further aspect, there is provided a computer programproduct for processing data in an OLAP database, the computer programproduct comprises: a storage medium configured to store computerreadable instructions; the computer readable instructions includinginstructions for, characterizing data in the OLAP cube according to acommon dimension, and the common dimension comprising one or more commondimension members; characterizing data in the OLAP cube according to anon-common dimension, and the non-common dimension comprising one ormore non-common dimension members; specifying a combination comprisingselected common dimension members and selected non-common dimensionmembers; selecting cells in the OLAP cube based on the specifiedcombination, and reading data from the selected cells; applying aprocessing operation to the data read from the selected cells; andwriting data from the processing operation back to the OLAP cube.

Other aspects and features of the present invention will become apparentto those ordinarily skilled in the art upon review of the followingdescription of embodiments of the invention in conjunction with theaccompanying figures.

BRIEF DESCRIPTION OF THE DRAWINGS

Reference will now be made to the accompanying drawings which show, byway of example, embodiments of the present invention, and in which:

FIG. 1 shows in diagrammatic form an exemplary system for operating orexecuting methods or processing in accordance with an embodiment of theinvention;

FIG. 2 is an exemplary screen shot of a process configured to specify acube and one or more operations associated with the cube, according toan embodiment of the invention;

FIG. 3 is an exemplary screen shot of a process configured to selectcommon dimensions and/or dimensions for a cube in accordance with anembodiment of the invention;

FIG. 4 is an exemplary screen shot of a process configured to selectsource and/or target members of non-common dimensions for a cube inaccordance with an embodiment of the invention;

FIGS. 5A and 5B are exemplary screen shots of a process configured tospecify data transformation operations for a cube in accordance with anembodiment of the invention;

FIG. 6 is an exemplary screen shot of a process configured to specifythe handling of processing exceptions;

FIG. 7 shows in flowchart form a process for calculating processes inaccordance with an embodiment the present invention;

FIG. 8 shows in flowchart form a process for reading data from a cubeand determining an average value in accordance with an embodiment thepresent invention;

FIG. 9 shows in flowchart form a process for determining adjustments todata read from a cube in accordance with an embodiment of the presentinvention;

FIG. 10 shows in flowchart form a process for managing the allocation ofdata to a cube based on a time dimension in accordance with anembodiment of the present invention;

FIGS. 11A and 11B show in flowchart form a process for determining timeallocation parameters in accordance with an embodiment of the presentinvention;

FIG. 12 shows in flowchart form a process for calculating dataallocations across a time dimension in accordance with an embodiment ofthe present invention;

FIG. 13 shows in flowchart form a process for managing data allocationsacross non-time dimensions in accordance with an embodiment of thepresent invention;

FIGS. 14A and 14B show in flowchart form a process for determiningnon-time allocation parameters in accordance with an embodiment of thepresent invention;

FIG. 15 shows in flowchart form a process for calculating allocated datafor allocations across non-time dimensions in accordance with anembodiment of the present invention;

FIG. 16 shows in flowchart form a process for storing data in a cube inaccordance with an embodiment of the present invention;

FIG. 17 shows in flowchart form a process for copying data between timemembers in the cube in accordance with an embodiment of the presentinvention;

FIG. 18 shows in flowchart form a process for managing the deletion ofsource data and generation of contra account entries in accordance withan embodiment of the present invention; and

FIGS. 19A and 19B show in flowchart form a process for calculatingcontra account entries in accordance with an embodiment of the presentinvention.

Like reference numerals indicate like or corresponding elements orcomponents in the drawings.

DETAILED DESCRIPTION OF THE EMBODIMENTS OF THE INVENTION

Embodiments according to the present invention are described in thecontext of data or information used by companies for planning,budgeting, monthly financial reporting and/or consolidation of financialresults. In the context of the present description, numerical data isstored in an OLAP database, and comprises one or more cubes. Each cubecomprises a structure based on dimensions and members.

The cubes and dimensions will vary from company to company. In addition,the names of dimensions within cubes can vary. For instance, a cube canhave dimensions named “Accounts”, “Versions” and “Time”, and a number ofother dimensions with other names. Each dimension comprises a list ofmembers. For example, an “Organization” dimension in a cube comprises alist of departments and reporting entities for a company. The dimensionscan also have a calculation structure that describes data aggregation,e.g. ‘East Region’=‘New York’ plus ‘Boston’, or a calculation structurethat describes a more complex calculation, e.g. ‘Benefits’=10% of‘Salaries’. It will be appreciated that calculations can also bedifferent for each company.

In the context of the present description, data is stored in an OLAPdatabase as a single numerical value for each dimension combination. Forexample, if the dimensions are ‘Time’, ‘Accounts’, ‘Version’ and‘Organization’, each of which has a member called ‘Jan08’, ‘Salaries’,‘Plan’ and ‘Boston’ respectively, then one numeric value is stored forthis combination of members. Similarly, a different number is stored inthe database for ‘Feb08’, ‘Salaries’, ‘Plan’ and ‘Boston’.

Typically, data is accessed (i.e. imported) in an OLAP database at adetailed level, for example, using the ‘Time’, ‘Accounts’, ‘Version’ and‘Organization’ dimensions (e.g. ‘Jan08’, ‘Salaries’, ‘Plan’ and‘Boston’). The data is then processed and reported at an aggregatedlevel to provide historical information, for example, according to thedimensions, ‘Total Year’, ‘Total Expenses’, ‘Plan’ and ‘Total Company’.

As will be described in more detail below, the present inventioncomprises embodiments of a system and method for accessing data in anOLAP database or cube, configuring operations (i.e. data processes) toprocess the data, and configuring manipulations involving the data.

In the context of the present description, a process generally refers todata manipulation operations, and is referred to as “processes” or “dataprocesses”. A typical process involves collecting data within a cube,performing an operation on it (e.g. an allocation, averaging orincreasing/decreasing the amounts) and then storing data back in thecube. As will be described in more detail below, the present inventionaccording to one aspect provides a structured approach and generalizedinterface configured for performing operations, such as, datacollection, aggregation and storage, and combinations thereof, accordingto a variety of customer needs without the need for customization.According to a further aspect, the capability to handle exceptionconditions or customer specific operations is provided. Process in thecontext of the present description will also refer to acomputer-implemented process (i.e. a computer function or softwareconfiguration) to execute an algorithm or perform othercomputer-implemented or configured operations or functions.

In accordance with embodiments of the present invention a system andtechniques (e.g. computer-implemented processes) are described in moredetail below for accessing data in an OLAP database and configuringprocesses for manipulating and processing the data.

Reference is made to FIG. 1, which shows in diagrammatic form anexemplary operating environment and configuration for a system andprocesses according to embodiments of the present invention. Theoperating environment according to an embodiment and indicated generallyby reference 100 comprises a client/server configuration. As shown, oneor more clients 110, indicated individually by references 110 a, 110 b,110 c, . . . 110 n, access a server indicated by reference 120, forexample, through a network 130. The network 130 may comprise a localarea network (LAN), a wide area network (WAN), the Internet or anycombination thereof. As shown the server 120 interfaces with a database140. According to an embodiment, the database 140 is configured as anOLAP database and comprises a number of cubes 142, indicatedindividually by references 142 a, 142 b, 142 c, 142 d, 142 e, . . . .The cubes 142 are configured with dimensions and members as describedabove and in further detail below.

According to an embodiment, the system 100 includes a storage moduleindicated generally by reference 134. The storage module 134 isconfigured to store data process definitions, for example, as defined bya user. According to an embodiment, the storage module 134 isimplemented using a relational data structure or configuration.

As shown in FIG. 1, the server 120 is configured with an applicationindicated generally by reference 122. According to an embodiment, theapplication 122 comprises a client interface module 124 and acalculation engine module 126.

The client interface module 124 is configured to provide an interfacewith the client machines 110. According to an embodiment, the clientinterface module 124 is implemented with a user interface or GUI(Graphical User Interface) which runs on each of the client machines 110as indicated generally by reference 112. According to an embodiment, theclient interface module 124 and the user interface 112 comprise logicand processes configured to provide a user with the capability tospecify a processing request for data in the database 140, i.e. aprocess for querying structural component(s) associate with one of thecubes. According to an embodiment, the application 122 includes a modulefor storing processes specified by a user in the database, for example,in the storage module 134.

The calculation engine module 126 comprises a computer-implementedprocess(es) or function(s) that runs on the server 120 and performsmanipulation of data in the cube 142 according to a specification, i.e.a data process specified and provided by the user through the userinterface 112. According to an embodiment, the execution of a dataprocess is independent of the specification of the data process. Forexample, a data process can be executed multiple times and the executionof a data process can be scheduled to run at any time. According to anembodiment, the calculation engine is configured to execute processdefinition(s) retrieved or returned from the storage module 134.

For example, the system and method according to the present inventionprovides the capability for accessing and/or manipulating data in anOLAP database in order to generate information for planning andreporting purposes. Typical examples include the following:

-   -   for each product, calculate monthly 2009 planned unit sales to        be 10% greater than the monthly average for January thru        September of 2008    -   for each product, calculate monthly material unit costs in 2009        to be 15% greater than the average in Quarter 3 of 2008    -   for a new product, the 2009 price for customers in the Eastern        US is $100; in the West it is $110    -   for the optimistic scenario, increase the planned units sold by        100,000 for the whole of 2009, preserving the seasonality and        the spread across branches.    -   for each month, take the total actual costs of the IT department        and allocate them to lines of business based on number of        computers in each department. Create a corresponding reversing        entry in the IT department    -   in a reforecast, assume costs for July 2009 to December 2009        will be the same as in the budget, except in the Atlanta branch        where they will be $100,000 less than budget.

The functionality, logic and processes associated with the clientinterface module 124 and the user interfaces 110 are described in moredetail below according to embodiments of the invention. Embodiments ofprocessing modules and functionality of the calculation engine module126 are also described in more detail below.

In the context of the processes and operations associated with theapplication 122, i.e. the client interface 124 and the calculationengine 126, “Common Dimensions” are defined as dimensions within whichdata is not manipulated. The selected members of Common Dimensionsdetermine the member combinations for which data manipulation will takeplace. For example, if the only Common Dimensions are Time and Productsand the selected members are “January; February; March” and “Widgets;Grommets” respectively, then data manipulation will take place for eachof the 6 combinations “January, Widgets”, “February, Widgets”, “March,Widgets”, “January, Grommets”, “February, Grommets” and “March,Grommets”.

Source/target dimensions are dimensions within which data ismanipulated. The selected source members of Source/Target Dimensionsdetermine the member combinations for which data will be read from thecube. Selected Source dimension members can be calculated, for example,data can be copied from “Total Company” even if Total Company” is theaggregation of many departments. The selected target members ofSource/Target Dimensions determine the member combinations for whichdata will be written back to the cube. Selected Target dimension membersmust be editable, i.e. leaf members, or non-calculated members intowhich data can be stored. In the context of the present description, aSource/Target dimension may be referred to as either a Source Dimensionor a Target Dimension. Target Dimensions may be further subdivided intoTime Target Dimensions and Non-Time Target Dimensions. If Time is aTarget Dimension, the Time Target Dimension is the Time Dimension;otherwise it is the NULL dimension. The Non-Time Target Dimensioncomprises all Target Dimension except the Time Target Dimension.

In accordance with this convention or notation, the address of a datacell or tuple comprises one of the following:

-   -   (1) a “Common Dimension” member combination and a “Source        Dimension” member combination;    -   (2) a “Common Dimension” member combination and a “Target        Dimension” member combination;    -   (3) a “Common Dimension” member combination, a “Time Target        Dimension” member combination (i.e. either NULL or a single        member of the Time Dimension) and a “Non-Time Target Dimension”        member combination;    -   (4) a “Common Dimension” member combination when all dimensions        are Common Dimensions, for example, when the operation being        performed is “Storing single data value”.

The configuration and operation of the calculation engine 126 and thesystem 100 is now described in further detail with reference to the userinterface depicted in FIGS. 2 to 6.

According to an embodiment, the user interface 112 comprises fivescreens: a General screen 200 depicted in FIG. 2, a Common Dimensionsscreen 300 depicted in FIG. 3, a Source/Target Members screen 400depicted in FIG. 4, a Data Transformation screen 500 as depicted in FIG.5, and a Processing Options screen 600 as depicted in FIG. 6. As showneach of the screens includes five tabs: a “General” tab 210, a “CommonDimensions” tab 220, a “Source/Target Members” tab 230, a “DataTransformation” tab 240, and a “Processing Options” tab 250. The screensare configured or implemented to provide a user with the capability tospecify a process, i.e. a process for processing data in the database.The tabs allow a user to switch or move between screens and the layoutsof certain screens will change depending on the options selected in theother tabs, as will be described in more detail below.

The General screen 200 is depicted in FIG. 2 according to an embodiment.The General screen 200 is configured to provide a user with thecapability to specify a cube 142 (FIG. 1) in the database 140 (FIG. 1)on which a data process is to be performed or executed. As shown in FIG.2, the General screen 200 includes an “Operate on” panel 260 forspecifying the cube. The main screen 200 also includes an “Options”panel indicated by reference 270. The Options panel 270 is configured toallow a user to “Store or allocate based on existing data” 272, store auser specified value 274, or allocate a specified value 276. The Storeor allocate option 272 is configured to read the data to be processedread from the cube. The store option 274 is configured to store a valueentered in box 275 by the user at process definition time. The allocateoption 276 is configured to allocate a value entered by the user in box277 by the user during the definition of the data process.

The Common Dimensions screen 300 is depicted in FIG. 3 according to anembodiment. The Common Dimensions screen 300 is configured to provide auser with the capability to select Common Dimensions for a process thatwill be executed by the calculation engine 126. The Common Dimensionsscreen 300 is also configured to provide the capability to select“members” of the Common Dimensions for the process. As shown in FIG. 3and according to an embodiment, cube dimensions indicated by reference310 are displayed and the user selects a dimension by clicking theassociated checkbox. The members associated with a Common Dimension aredisplayed on the screen 300 as indicated by reference 320. Once a CommonDimension for the cube is selected, the user is able to select one ormore of the members for the selected Common Dimension. Members forunchecked Common Dimensions (i.e. non-Common Dimensions) cannot beselected. According to another aspect, at least one member must beselected in a Common Dimension for a data process to be run by thecalculation engine. According to another aspect, if the data processcomprises the “Store the following value” operation, then the screen 300is configured to select all of the Common Dimensions and the checkboxescannot be edited.

The Source/Target Members screen 400 according to an embodiment is shownin FIG. 4. The Source/Target Members screen 400 is configured to providea user with the capability to select Source members and/or Targetmembers for non-Common dimensions in a cube. According to an embodiment,the Source/Target Members screen 400 comprises a Source Data panel 410and a Target Members panel 420. The Source Data panel 410 displaysnon-Common (Source) Dimensions, for example, “Versions” and “Time”, asindicated by reference 412. The Target Members panel 420 displays theMembers for the selected non-Common Dimension, as indicated by reference414. According to an aspect, at least one member must be selected ineach Source Dimension for a data process to be run by the calculationengine. It will be appreciated that the selected members for the SourceDimensions specify the cells in the cube (i.e. tuples) from which datais read. According to another aspect, if the data process comprises a“Store the following value” operation or an “Allocate the followingvalue” operation, then the Source Data panel 410 is deactivated on thescreen 400.

Referring still to FIG. 4, the Target Members panel 420 provides theuser with the capability to select Target Dimension members from eachnon-Common Dimension. The Target Members panel 420 displays non-Common(Target) Dimensions, for example, “Versions” and “Time”, as indicated byreference 422. The Target Members panel 420 displays the Member for theselected non-Common Dimension, as indicated by reference 424. If theTarget Dimension is “Accounts” or “Versions”, then a single member canbe selected. For other dimensions, the screen 400 is configured to allowsingle or multiple target members to be selected by the user. Theselected members for the Target Dimensions specify the cells in the cube(i.e. tuples) to which data is written. According to another aspect, ifthe data process comprises a “Store the following value” operation, thenthe Target Members panel 420 is deactivated on the screen 400.

The Data Transformation screen 500 according to an embodiment is shownin FIG. 5A. The Data Transformation screen 500 is configured to providea user with the capability to specify how values read from the cube areaggregated, how values from the cube are manipulated, and/or how valuesare allocated back to the cube. As shown in FIGS. 5A and 5B, the DataTransformation screen 500 comprises a “Data calculation options” panel510, a “Time Spread” panel 530, and a “Dimension spread” panel 550.

As shown in FIG. 5A, the Data calculation options panel 510 isconfigured for a “Source data aggregation option” indicated by 512. Thisoption specifies how data is to be aggregated from multiple SourceDimension member combinations. According to an embodiment, a drop-downlist indicated by reference 514 is provided and configured to allow theuser to select from “Aggregate”, “Average including empty values”,“Average excluding empty values” and “Copy between time members” basedon the following conditions being true:

-   -   time is a non-Common Dimension in the cube    -   the number (#) of Time source members is the same as the        number (#) of Time target members    -   the Time source members comprise contiguous leaf members    -   the Time target members comprise contiguous leaf members    -   one Source Dimension member is selected for all non-Common        dimensions other than Time    -   one Target Dimension member is selected for all non-Common        dimensions other than Time

According to a further aspect, the Data Transformation screen 500 isconfigured to activate/display the Source data aggregation option 512based on the following conditions being true: the data process comprisesthe “Storing/Allocating Data Present in the Cube” operation, and thereis more than one member selected from at least one Source Dimension.

According to another aspect, the Data calculation options panel 510includes a “Delete data from source” option as indicated by reference516 in FIG. 5A. The Delete data from source option 516 allows a user tospecify whether source data is to be deleted from the cube. The DataTransformation screen 500 is configured to activate/display the “Deletedata from source” option if the operation comprises “Storing/AllocatingData Present in the Cube”.

According to another aspect, the Data calculation options panel 510includes a “Generate contra account entry” option as indicated byreference 518 in FIG. 5B. The Generate contra account entry option 518allows a user to specify whether data being allocated is to be used in acontra account, and if yes, in which account. The Data Transformationscreen 500 is configured to activate/display the “Generate contraaccount entry” option 518 based on the following conditions being true:

-   -   the data process comprises the“Storing/Allocating Data Present        in the Cube” operation    -   Accounts comprise a non-Common Dimension    -   at least one dimension, other than Versions and Accounts,        comprises a non-Common Dimension    -   only one Source dimension member is selected for the non-Common        Dimensions

According to another aspect, the Data calculation options panel 510includes an “Apply the following transformation to the source data”option as indicated by reference 520 in FIG. 5A. The Apply the followingtransformation to the source data option 520 allows a user to specifyhow data is to be adjusted before being written to the cube. The optionsmay be configured in a drop-down list 521 and comprise the followingoptions:

-   -   “None”    -   “Increase by Percentage”    -   “Decrease by Percentage”    -   “Increase by Absolute Amount”    -   “Decrease by Absolute Amount”    -   “Multiply by Amount”

According to another aspect, the Data calculation options panel 510includes a “Target data write” option as indicated by reference 522 inFIGS. 5A and 5B. The Target data write option 522 allows a user tospecify how data is to be written to a cube. The Target data writeoptions may be configured in a drop-down list 523 and comprise thefollowing options:

-   -   “Overwrite Existing Data”    -   “Add to Existing Data”    -   “Subtract from Existing Data”

The Time spread panel indicated by reference 530 in FIGS. 5A and 5B isconfigured to allow a user to specify how data is to be allocated acrossthe Time Target dimension. According to an embodiment, the Time spreadpanel 530 allows data to be allocated according to the followingoptions:

-   -   “Store value to leaf members” indicated by 532    -   “Spread based on existing data” indicated by 534    -   “Spread based on data in a member property dimension” indicated        by 536    -   “Spread based on data in a different member combination”        indicated by 538    -   “Spread evenly” indicated by 540

According to an embodiment, the Data Transformation screen 500 isconfigured to display/activate the Time spread panel 530 when thefollowing conditions are true:

-   -   the operation is not a “Store the following value” operation    -   “Time” is non-Common dimension    -   there is more than one target member selected from the Time        dimension    -   the option selected for “Source Data Aggregation” is not “Copy        between time members”

As shown in FIG. 5A, the “Spread based on data in a member propertydimension” option 536 includes a drop-down list 537 for specifyingadditional parameters such as “Start Date”. According to another aspect,the Time spread panel 530 is configured to display input boxes 539 forthe cube dimensions, i.e. “Account”, “Version” and “Time Periods”. Thecube dimensions are associated with the Spread based on data in adifferent member combination option 538. The default selected member foreach of the cube dimensions is “Same as Target”.

The Dimension spread panel indicated by reference 550 in FIG. 5B isconfigured to allow a user to specify how data is to be allocated acrossnon-Time Target dimensions. According to an embodiment, the Dimensionspread panel 550 allows data to be allocated according to the followingoptions:

-   -   “Store value to leaf members with no spread” indicated by 552    -   “Spread based on existing data” indicated by 554    -   “Spread based on data in a member property dimension” indicated        by 556    -   “Spread based on data in a different member combination”        indicated by 558    -   “Spread evenly” indicated by 560

According to an embodiment, the Data Transformation screen 500 isconfigured to display/activate the Dimension spread panel 550 when thefollowing conditions are true:

-   -   the operation is not a “Store the following value” operation    -   there is at least one non-Common Dimension other than the cube        dimensions “Time”, “Versions” and “Accounts”    -   there is more than one target member selected from at least one        non-Common dimension other Time, Versions and Accounts

According to another aspect, the Dimension spread panel 550 isconfigured to display input boxes 559 for the cube dimensions, i.e.“Account”, “Version” and “Time Periods” for the case of the “SpreadBased on the existing data pattern” option 558. According to anembodiment, the cube dimensions, except the dimensions associated withselected multiple Target members, are displayed and the user can selecta single member from each. The default selected member for each of thecube dimensions is “Same as Target”.

The Processing Options screen 600 is accessed by the Processing Optionstab 250 and an exemplary implementation according to an embodiment isshown in FIG. 6. The Processing Options screen 600 is configured toprovide a user with the capability to specify how the data process is tohandle exception conditions. As shown in FIG. 6, the Processing Optionsscreen 600 comprises a “Spread based on zero” panel 610, a “Non-editablemember combinations” panel 620, and a “Details to log” panel 630.

As shown in FIG. 6, the “Spread based on zero” panel 610 comprises a“Time Spread Invalid Value Handling” condition indicated by reference612. According to an embodiment, the Time Spread Invalid Value Handlingincludes a drop-down list box 614 with the following options:

-   -   “Spread evenly with no warning”    -   “Spread evenly, but generate a warning”    -   “Skip this member combination with no warning”    -   “Skip this member combination, but generate a warning” as shown        in the list box 614 in FIG. 6    -   “Abort the process”

Referring again to FIG. 6, the “Spread based on zero” panel 610 alsoincludes a “Dimension Spread Invalid Value Handling” condition indicatedby reference 616. According to an embodiment, the Time Spread InvalidValue Handling includes a drop-down list box 618 with the followingoptions:

-   -   “Spread evenly with no warning”    -   “Spread evenly, but generate a warning”    -   “Skip this member combination with no warning”    -   “Skip this member combination, but generate a warning” as shown        in the list box 618 in FIG. 6    -   “Abort the process”

As shown in FIG. 6, the “Non-editable member combinations” panel 620comprises a “When a target member combination that is non-editable isencountered, how should it be handled” option indicated by reference622. The Non-editable member panel 620 is configured to allow a user tospecify what processing occurs if data is to be written to dimensionmember combinations that are not editable for one or more reasons.According to an embodiment, the Non-editable member panel 620 includes adrop-down list box 624 with the following options:

-   -   “Skip the member combination, but generate a warning” as        indicated in the list box 624 in FIG. 6    -   “Skip the member combination with no warning”    -   “Abort the process”

The “Details to log” panel 630 is configured to provide user selectablereporting options as indicated by reference 632. According to anembodiment, a drop-down list box 634 is provided to list reportingoptions, for example, including Minimal (as shown), Moderate, Maximum orFull.

Reference will next be made to FIGS. 7 to 19, which further describe theprocesses, logic and operations associated with the user/clientinterfaces 112, 124 (FIG. 1) and/or the calculation engine 126,according to embodiments of the present invention.

The data flow in accordance with an embodiment may be generalized asfollows:

-   -   a data process can be executed for multiple combinations of        entities. These entities are based on “common” dimensions. For        example, the dimensions “Products” and “Customers” comprise        common dimensions, and the process is run for each of 10,000        products and for each of 1,000 customers, for a total of        10,000,000 times.

for each combination of Common Dimensions, the following steps occur:

-   -   the data is aggregated or averaged from multiple cells in the        cube being calculated (based on “Source” members of each        non-Common dimension). For example, the average price across all        weeks in a quarter, or the total costs for all departments can        be calculated. Alternatively, this value can be specified as a        fixed value if the process does not involve reading cube data.    -   the calculated value can be manipulated further. For example,        the average price can be increased by 5%.    -   the value is then either stored in multiple cells in the cube or        allocated (spread) across multiple cells (based on “Target”        members of each non-Common dimension). If the data is allocated,        an allocation method is specified; the data can be spread        evenly, or based on data that already exists in the cube. For        example, in order to forecast seasonality, a sales forecast can        be spread across months based on the previous year's sales.

The calculation engine 126 is configured to read data from cells (i.e.tuples) in the cube, and the cells are selected based on combinations ofthe selected Common Dimension members and the selected source members ofSource/Target Dimensions, for example, using the logic as described forthe user interface screens. The calculation engine 126 is configured towrite data to cells (i.e. tuples) based on combinations of the CommonDimension members and target members of Source/Target Dimensions, whichare selected, for example, through the user interface screens asdescribed above.

According to an embodiment, the calculation engine 126 is configured toexecute three types of operations: (1) “Store or allocate based onexisting data”; (2) “Store single data value”; and (3) “Allocate singledata value”. For the Store or allocate based on existing data operation,the calculation engine 126 includes a process or function configured toread from the cube and aggregate, and optionally, average to derive asingle data value. The operations “Store single data value” and“Allocate single data value” represent special cases, when the data thatis the source of a Process is not present in the cube. For the Storesinge data value operation, the calculation engine 126 includes aprocess or function configured to populate the cube with identicalvalues, e.g. “Product X prices are $100 for all months in all markets”.For the Allocate single data value operation, the calculation engine 126is configured to allocate a single value across many dimensions, e.g.“Adjust the plan by decreasing planned Total Company Telephone Expensesto $1,000,000 and spread this across departments based on the existingplan”.

In the context of the present description, Common Dimensions comprise a“looping” mechanism that allows data to be read from the cube andwritten to the cube independently for each combination of selectedmembers from the Common Dimensions.

For each of these combinations, the calculation engine 126 is configuredas follows:

-   -   (1) for reading data from the cube, the calculation engine 126        is configured to read multiple values from the combinations of        all selected source members of Source/Target Dimensions; the        values can be either aggregated or averaged, the result of which        is one data value for each combination of selected Common        Dimension members;    -   (2) read data options—the calculation engine 126 is configured        to optionally delete data thus read from all combinations of all        selected source members of Source/Target Dimensions;    -   (3) specified data values—the calculation engine 126 is        configured to manipulate data on an individual basis; for        example, the calculation engine 126 includes a process for        “Storing single data value”, and a process “Allocating single        data value”); in these cases, the same data value is used for        all combinations of selected Common Dimension members;    -   (4) data transformations—the calculation engine 126 is        configured to transform a single data value that is, for        example, the result of collecting data from the cube, or that,        for example, has been entered as a single value; according to        another aspect, the calculation engine 126 is configured to add        and/or subtract absolute or percentage amounts to the data        value, or multiply the data value (by a factor);    -   (5) writing data to the cube—the calculation engine 126 is        configured to write the data value to the combinations of all        selected target members of Source/Target Dimensions. According        to a further aspect, the single data value is spread (i.e.        allocated) across these combinations or stored in each        combination;    -   (6) allocations—the calculation engine 126 is configured to        allocate data to target dimension members; according to another        aspect, the calculation engine 126 is configured to allocate or        spread data to the combinations of selected target members of        Source/Target Dimensions as follows (for example, as described        above the with reference to the user interface 112):        -   “Store value to leaf members” (i.e. copy, don't allocate)        -   “Spread Based on Existing Data”        -   “Spread Based on Data in a dimension Member Property”        -   “Spread Based on data in a different member combination”        -   “Spread Evenly”        -   Data allocation for the Time Dimension is treated            differently as described in more detail below. Data            allocation according to the “Spread Based on data in a            different member combination” is treated as an exception to            the methods of addressing cells, as described in more detail            below.    -   (7) write data options—the calculation engine 126 is configured        to write allocated data to the cube according to the following        options:        -   “Overwrite Existing Data”        -   “Add to Existing Data        -   “Subtract from Existing Data

According to another aspect, the calculation engine 126 is configured tooptionally adjust data in the selected Source dimension members. It willbe appreciated that this function allows adjustments to be made, forexample, for financial reporting purposes when overheads are allocatedbetween business entities, as described in more detail with respect to“Contra Accounts”.

Reference is now made to FIG. 7, which shows an embodiment of a processor processing algorithm for the calculation engine denoted by reference700. The processing algorithm 700 is implemented to calculate or executethe data processes associated with the cube. According to an embodiment,the process 700 is called or invoked as indicated by reference 701.According to one aspect, the processing algorithm treats all dimensionsas equal. According to another aspect, dimensions are separated into twotypes of dimensions: (1) common dimensions; and (2) source/targetdimensions.

As shown in FIG. 7, a decision step 710 is executed to determine thetype of “Source data aggregation” operation to be executed. The Sourcedata aggregation operation can be specified by the user according to oneor more options, for example, using the Data Transformation Taboperation, as described above with reference to FIG. 5(a). If the Sourcedata aggregation operation comprises a “Copy between time members”operation, then a “Copy between time members” process is executed asindicated by 712. The Copy between time members process executes aprocess to copy between time members as described in more detail belowwith reference to FIG. 17. Otherwise, a looping operation through theassociated or defined Common Dimension Combinations is executed asindicated by reference 720. For example, if Product is a CommonDimension and there are 10 members of Product selected, then the processwill be calculated for each of the selected members. The number of cellsaffected in an operation (such as reading or writing data) is determinedby the number of members selected in each cube dimension. The number ofcells affected is the product of the numbers of members selected in allcube dimensions. As shown in FIG. 7, a check is made in 730 to determineif all the Common Dimension Combinations have been considered. If not,the loop process is repeated for the next Common Dimension Combinationas indicated by 732.

As shown in FIG. 7, a process is executed in 722 to calculate “Value toProcess” for the common dimension combination. The Value to Processcomprises a process that is configured to read cube data and aggregatethe data or calculate an average value. An embodiment of a process tocalculate “Value to Process” is described in more detail below withreference to FIG. 8. Next, a process to adjust “Value to Process” isexecuted as indicted by reference 724. The Adjust Value to Processcomprises a process configured to calculate adjustments to data readfrom the cube. An embodiment of a process for adjusting “Value toProcess” is described in more detail below with reference to FIG. 9.Next as indicated by reference 726, a check is made to determine if theoperation involves storing a single data value. If yes, the single datavalue is assigned to “Value to Store” as indicated by reference 736, andprocess configured to Store Data in the Cube is called or invoked asindicated by reference 738. An embodiment of a process to store data inthe cube is described in more detail below with reference to FIG. 16. Ifthe operation does not involve a single data value (i.e. as determinedin 726), then a process configured to “Write Data to Cube” is called orinvoked as indicated by reference 728. The write data to cube processmanages the allocation of data across the Time Dimension. An embodimentof write data to cube process is described in more detail below withreference to FIG. 10. If the last common dimension combination has beenconsidered (i.e. as determined in 730), then post processing may beinitiated or invoked as indicated by reference 734. According to anembodiment, the post processing comprises execution of a processconfigured to manage deletion of source data and/or generation of contraaccount entries, as described in more detail below with reference toFIG. 18. The calculation engine 126, and its associated processes,terminate as indicated by reference 740.

Reference is next made to FIG. 8, which shows in flowchart form anembodiment of a process to calculate the “Value to Process”. The processis indicated generally by reference 800 and was called or invoked asindicated by reference 722 (FIG. 7). The process for calculating valueto process comprises first determining if the specified data processcomprises a “storing/allocating data present in the cube” operation asindicated by reference 810. If no, then the “Value to Process” is set tothe entered data value, and the process 800 is terminated or ended asindicated by reference 860. If the process comprises a“storing/allocating data present in the cube” operation (decision block810), then the “Value to Process” parameter is set to zero as indicatedby reference 812. Next a looping operation through the associated ordefined Source Dimension Combinations is executed as indicated byreference 820. For example, if a Source Dimension has 12 members and 10members are selected, then the process will be calculated for each ofthe selected members. The number of cells affected in an operation (suchas reading or writing data) is determined by the number of membersselected in each cube dimension. The number of cells affected is theproduct of the numbers of members selected in all cube dimensions. Asshown in FIG. 8, a check is made in 828 to determine if all the SourceDimension Combinations have been considered.

As shown in FIG. 8, the first step in the looping operation involvesreading a “Cell Data Value” for the Common Dimension Combination/SourceDimension Combination, as indicated by reference 822. Next in decisionblock 824 a check is made for a missing data value. If a data value ismissing, then the next step involves incrementing the parameter “# DataCells Read” by one (1), as indicated by reference 825. If a data valueis not missing (decision block 824), then the next step comprisesincrementing the parameter “Value to Process” by the “Cell Data Value”and incrementing by one (1) the parameter “# Non-Missing Data CellsRead” and the parameter “# Data Cells Read”, as indicated by reference826. If this is the “Last Source Dimension Combination” (as determinedin step 828), then a check is made in decision block 840 to determine ifthe “Source Data Aggregation Option” is the “Aggregate”, if yes then theprocess 800 is terminated or ended as indicated by reference 860. If no,then a check is made in decision block 842 to determine if the “SourceData Aggregation Option” is equal to the calculated “Average includingempty values”. If no, then the “Value to Process” is divided by thenumber of Non-Missing Data Cells Read” in step 846, and then the process800 is terminated in step 860. If the “Source Data Aggregation Option”is equal to the calculated “Average including empty values” (asdetermined in decision block 842), the “Value to Process” is divided bythe number of “Data Cells Read” in step 844, and then the process 800 isterminated in step 860.

Reference is next made to FIG. 9, which shows in flowchart form anembodiment of a process, i.e. a software process or processor configuredto adjust the “value to process”. The process is indicated generally byreference 900 and is called or invoked as indicated by reference 724(FIG. 7). The process for adjusting the “value to process” 900 comprisesapplying one or more transformations to “Source Data”. A check is madein step 910 to determine if the first transformation comprisesincreasing the source data by a percentage. If no, then the nexttransformation is determined in step 920. If yes, then the “Value toProcess”, i.e. the source data, is increased by a specified percentage,as indicated by reference 912. Next a check is made in step 920 todetermine if the transformation comprises decreasing the source data bya percentage. If no, then the next transformation is determined in step930. If yes, then the “Value to Process”, i.e. the source data, isdecreased by a specified percentage, as indicated by reference 922. Nexta check is made in step 930 to determine if the transformation comprisesincreasing the source data by an absolute amount. If no, then the nexttransformation is determined in step 940. If yes, then the “Value toProcess”, i.e. the source data, is increased by a specified amount, asindicated by reference 932. Next a check is made in step 940 todetermine if the transformation comprises decreasing the source data byan absolute amount. If no, then the adjust source data value process 900ends or terminates as indicated in step 950. If yes, then the “Value toProcess”, i.e. the source data, is decreased by a specified amount, asindicated by reference 942, and the process 900 terminates in step 950.

Reference is next made to FIG. 10, which shows in flowchart form anembodiment of a process, i.e. a software process or processor configuredto write or allocate data to a cube. The process is indicated generallyby reference 1000 and is called or invoked as indicated by reference 728(FIG. 7). According to an embodiment, the process according to thepresent invention treats time as a special dimension for the purposes ofallocating, i.e. writing, data to the cube. If time is a TargetDimension with multiple Target Dimensions being selected, then accordingto an embodiment, data is allocated across the time dimension beforebeing allocated across other dimensions. According to this aspect, thetime dimension has a different allocation method or process than theother target dimensions.

As shown in FIG. 10, the process 1000 comprises a number of operationsor steps for writing data to a cube. As shown, the first step comprisesdetermining if the time parameter is a “Common Dimension”, as indicatedby decision block 1010. If yes, then the data to write to the cube, i.e.“Value to Allocate”, is based on the “Value to Process”, as indicated byreference 1060, and because “Time” is a “Common Dimension”, the “Valueto Process” is allocated across the non-Time target dimension for thecube in step 1062, and the write data to cube process 1000 ends asindicated by step 1070. A process for allocating across non-time targetdimensions according to an embodiment is described in more detail belowwith reference to FIG. 13.

If Time is not a Common Dimension (as determined in decision block1010), then a check is made to determine if the number of Time TargetMembers is greater than one, as indicated by decision block 1020. If no,then the data to write to the cube, i.e. “Value to Allocate”, is basedon the “Value to Process”, as indicated by reference 1060, and because“Time” is a “Common Dimension”, the “Value to Process” is allocatedacross the non-Time target dimension for the cube in step 1062. Theprocess for writing data to cube 1000 ends as indicated by step 1070. Ifyes (as determined in decision block 1020), then next a determination ismade in decision block 1030 to determine if the “Time Spread Option” isset to “Store value to leaf members”. If no, then a process to calculatetime allocation parameters is called as indicated by step 1032, anddescribed in more detail below with reference to FIG. 11. If the TimeSpread Option is set to Store value to leaf members (decision block1030), then the process loops through the Time Target DimensionCombinations as indicated generally by reference 1040. As indicated bydecision block 1042, a check is made to determine if the Time SpreadOption is set to Store value to leaf members. If yes, then the Value toAllocate (i.e. the data to write to the cube) is set to the “Value toProcess” as indicated by reference 1043, and a process to allocateacross non-time target dimensions is called in step 1046. An embodimentof a process to allocate across non-time target dimensions is describedin more detail below with reference to FIG. 13.

As shown in FIG. 10, if the time spread option is not set to store valueto leaf members (as determined in decision block 1042), then a processto calculate Time Allocated “Value to Allocate” is called in step 1044.An embodiment of a process to calculate Time Allocated “Value toAllocate” is described in more detail below with reference to FIG. 12.Next, the process to allocate across non-time target dimensions iscalled in step 1046. And then in step 1048, a check is made to determineif the last Time Target Dimension Combination has been considered. Ifno, then the next Time Target Dimension Combination is determined instep 1050 and the looping operation (as indicated in block 1040) isrepeated. Otherwise, the process for writing data to the cube 1000 endsas indicated by reference 1070.

Reference is next made to FIGS. 11A and 11B, which show in flowchartform an embodiment of a process, i.e. a software process or processorconfigured to calculate time allocation parameters. The process isindicated generally by reference 1100 and is called or invoked asindicated by reference 1032 (FIG. 10). The process for calculating thetime allocation parameters 1100 comprises initializing the followingparameters: “Time Target Denominator”=0; “Time Non-Editable Values”=0;and “# Time Editable Values”=0, as indicated by reference 1110. Next,the process 1100 comprises looping through the Time Target DimensionCombination(s) as indicated generally by reference 1120. As indicated bydecision block 1122, a check is made to determine if the Time Memberparameter is editable. If no, then the process 1100 loops throughNon-Time Target Dimension Combination (s0 as indicated by reference1160, as will be described in more detail below. If yes (as determinedin decision block 1122), then the next step comprises incrementing theparameter “# Time Editable Values”, as indicated by reference 1124.Next, a determination is made in step 1126 to determine if the “TimeSpread Option” is set to “Spread Evenly”. If yes, then a check is madeto determine if the all the Time Target Dimension Combinations have beenconsidered, as indicated by reference 1150. If no, then a check is madeto determine if the “Time Spread Option” is set to the option “Based onMember Properties”, as indicated by decision block 1128. If no, then theprocess loops through Non-Time Target Dimension Combinations asindicated by reference 1140 and described in more detail below. If yes,then the process 1100 reads or inputs the “Member Property Value”associated with the Time Target Dimension Combination, as indicated byreference 1130. Next, the process 1100 increments the parameter “TimeTarget Denominator” by the value for the “Member Property Value”, asindicated by reference 1132. If there are still Time Target DimensionCombinations to loop through as determined in step 1150, then the nextTime Target Dimension Combination is selected, as indicated by reference1152, and the looping process (step 1120) is repeated. Otherwise, theprocess for calculating time allocation parameters 1100 terminates orends, as indicated by reference 1170, and control returns to the callingprocess or function.

Referring again to FIGS. 11A and 11B, if the Time Member cannot beedited (as determined in decision block 1122), then the process 1100executes the looping operation through the Non-Time Target DimensionCombinations as indicated by reference 1160. As indicated by reference1162, the looping operation comprises reading or inputting the “CellData Value” for the Common Dimension Combination/Target DimensionCombination. Next, as indicated by reference 1164, the “TimeNon-Editable Values” is incremented by the Cell Data Value (read in step1162). Next in step 1166, a check is made to determine if the lastNon-Time Target Dimension Combination has been considered. If no, thenthe next Non-Time Target Dimension Combination is determined in step1168 and the looping operation (as indicated in block 1160) is repeated.Otherwise, the process the moves to step 1150 as described above.

Referring to FIGS. 11A and 11B, if the “Time Spread Option” is not setto “Based on Member Properties” (as determined in decision block 1128),then the process 1100 executes the looping operation through theNon-Time Target Dimension Combinations as indicated by reference 1140.As indicated by decision block 1142, a check is made to determine if theparameter “Time Spread Option” is set to “Spread Based on ExistingData”. If no, then the process 1100 stores data based on a differentmember combination. As indicated by reference 1143, the process 1100 isconfigured to read or input a “Cell Data Value” for a different CommonDimension Combination/Target Dimension Combination. Next and asindicated by reference 1146, the process 1100 increments the Time TargetDenominator by the Cell Data Value (in this case the Cell Data Valueread in step 1143). Next in step 1148, a check is made to determine ifthe last Non-Time Target Dimension Combination has been considered. Ifno, then the next Non-Time Target Dimension Combination is determined instep 1149 and the operation (as indicated in block 1142) is repeated.Otherwise, the process moves to step 1150 as described above.

Referring again to FIGS. 11A and 11B, if the “Time Spread Option” is setto “Spread Based on Existing Data” (as determined in decision block1142), then the process 1100 is configured to read or input a “Cell DataValue” for the Common Dimension Combination/Target DimensionCombination, as indicated by reference 1144. Next, the process 1100increments the Time Target Denominator by the Cell Data Value (in thiscase the Cell Data Value read in step 1144), as indicated by reference1146. Next in step 1148, a check is made to determine if the lastNon-Time Target Dimension Combination has been considered. If no, thenthe next Non-Time Target Dimension Combination is determined in step1149 and the operation in step 1142 is repeated as described above.Otherwise, the process moves to step 1150 as described above.

Reference is next made to FIG. 12, which shows in flowchart form anembodiment of a process, i.e. a software process or processor configuredto calculate the time allocation for value to allocate. The process isindicated generally by reference 1200 and is called or invoked asindicated by reference 1044 (FIG. 10). The process for calculating thetime allocation for value to allocate 1200 comprises first determiningif the Time Spread Option is set to “Spread Evenly” in decision block1210. If yes, then according to an embodiment, the “Value to Allocate”is calculated as follows,

Value to Allocate=(Value to Process−Time Non-Editable Values)/# TimeEditable Values

Next, the process for calculating time allocated for value to allocate1200 terminates or ends as indicated by reference 1240, and controlreturns to the calling process or function.

If no (as determined in decision block 1210), then a check is made indecision block 1212 to determine if the Time Spread Option is set to“Based on Member Properties”. If yes, then the next operation in theprocess 1200 comprises reading or inputting the “Member Property Value”for the Time Target Dimension Member, as indicated by reference 1214.Next and according to an embodiment, the Value to Allocate is calculatedin step 1216 as follows:

ValueToAllocate=(ValueToProcess−TimeNon-EditableValues)*MemberPropertyValue/TimeTargetDenominator

Next, the process for calculating time allocated for value to allocate1200 terminates or ends as indicated by reference 1240.

If the Time Spread Option is not set to the Based on Member Properties(as determined in decision block 1212), then a check is made in decisionblock 1220 to determine if the Time Spread Option is to the “SpreadBased on Existing Data” option. If yes, then the next operation in theprocess 1200 comprises reading or inputting the “Cell Data Value” forthe Common Dimension/Target Dimension Combination, as indicated byreference 1222. Next and according to an embodiment, the Value toAllocate is calculated in step 1224 as follows:

ValueToAllocate=(ValueToProcess−TimeNon-EditableValues)*CellDataValue/TimeTargetDenominator

The process for calculating time allocated for value to allocate 1200then terminates or ends as indicated by reference 1240.

Referring again to FIG. 12, if the Time Spread Option is not set toSpread Based on Existing Data (as determined in decision block 1220),then the process 1200 operates to store (allocate) based on a differentmember combination. As indicated by reference 1230, the next operationin the process 1200 comprises reading or inputting the “Cell Data Value”for the Different Common Dimension/Target Dimension Combination. Nextand according to an embodiment, the Value to Allocate is calculated instep 1232 as follows:

ValueToAllocate=(ValueToProcess−TimeNon-EditableValues)*CellDataValue/TimeTargetDenominator

Next, the process for calculating time allocated for value to allocate1200 terminates or ends as indicated by reference 1240.

Reference is next made to FIG. 13, which shows in flowchart form anembodiment of a process, i.e. a software process or processor configuredto allocate data across non-time target dimensions. The process isindicated generally by reference 1300 and is called or invoked asindicated by reference 1046 or 1062 (FIG. 10). The process forallocating data across non-time target dimensions 1300 comprisesdetermining if the operation comprises “Storing a single data value” asindicated by decision block 1310. If the operation comprises storing asingle data value (as determined in decision block 1310), then the nextoperation in the process 1300 comprises setting “Value to Store” to“Value to Allocate” as indicated by reference 1350. If the operation isnot set to “Storing single value data” (i.e. as determined in decisionblock 1310), then the process 1300 checks if the “Dimension SpreadOption” is set to “Store value to leaf members” as indicated by decisionblock 1320. If yes, then the process performs the operation in step 1350as described above. Next the process 1300 loops through the Non-TimeTarget Dimension Combination(s) as indicated by reference 1352. Thelooping operation includes storing data in the cube as indicated byreference 1354. A process or function configured to store data in a cubeaccording to an embodiment is described in more detail below withreference to FIG. 16. A check is made in step 1356 to determine if thereare any other Non-time Target Dimension Combinations to consider, thenthe next Non-time Target Dimension Combination is selected, as indicatedby reference 1358, and the looping process (reference 1352) is repeated.Otherwise, the process for allocating data to a cube across non-timetarget dimensions 1300 terminates or ends, as indicated by reference1360, and control returns to the calling process or function.

Reference is next made to FIG. 16, which shows an embodiment of aprocess or processor configured to store data in a cube. The process forstoring data in a cube is indicated generally by reference 1600. Asdescribed above, the process for storing data in a cube 1600 is invokedor called, for example, by the process for allocating data acrossnon-time target dimensions 1300 (FIG. 13). As shown, the process forstoring data in a cube 1600 first determines if the target data writeoption is set to “Overwrite Existing Data” as indicated by decisionblock 1610. If the option is set to overwrite, then the value to writeparameter is set to the “Value to Store” as indicated by reference 1611.The next step involves writing the data, i.e. the “Value to Write”, tothe cube for the associated “Common Dimension Combination” or “TargetDimension Combination” as indicated by reference 1620. If the targetdata write option is not set to overwrite existing data (for example,according to the settings under the Data Transformation tab 240 asdescribed above in FIG. 5), the process 1600 is configured to read “OldCube Data” for the Common Dimension Combination which is concatenatedwith the Target Dimension Combination, as indicated by reference 1612.Next in decision block 1614, a check is performed to determine if thetarget data write option is set to “Add to Existing Data”. If the optionis set, then the parameter “Value to Write” is set to the “Old CubeData” plus the value for the parameter “Value to Store”, as indicated byreference 1616. If the option is not set (as determined in step 1614),then the parameter “Value to Write” is set to the “Old Cube Data” lessthe value for the parameter “Value to Store”, as indicated by reference1618. The next operation involves writing the data to the cube asindicated by reference 1620 and described above. The process for storingdata in a cube 1600 terminates or ends as indicated by reference 1630,and control returns to the calling process or function.

Referring back to FIG. 13, if the option is not set to “Storing value toleaf members” (as determined in decision block 1320), then a check ismade to determine if the “Dimension Spread Option” is set to option“Spread Evenly” as indicated by decision block 1330. If the option isset to “Spread Evenly” (for example, using the Data Transformationscreen as described above with reference to FIG. 5), then the process1300 is configured to set the value to store to the “Value to Allocate”which is divided by the number of Non-time Target Dimension memberCombinations as indicated by reference 1331. Next, the process 1300performs the looping operation as indicated by reference 1352 anddescribed above. If the option is not set to “Spread Evenly” (asdetermined in decision block 1330), then the process 1300 is configuredto calculate non-Time Allocation parameters as indicated by reference1332. According to an embodiment, a process or function is called instep 1332 which is configured to calculate the non-Time Allocationparameters as described in more detail below with reference to FIG. 14.

Reference is next made to FIGS. 14A and 14B, which show a process orprocessor configured for calculating non-time allocation parametersaccording to an embodiment of the invention and indicated generally byreference 1400. As shown and indicated by reference 1410, the followingvariables/parameters are set to zero (0): “non-Time Target Denominator”,“non-Time Non-Editable Values” and “# non-Time Editable Values”. Theprocess 1400 comprises looping through the non-Time Target DimensionCombination(s) as indicated by reference 1420. The process 1400determines if the non-Time Member can be edited as indicated by decisionblock 1422. If no, the process 1400 is configured to read or input the“Cell Data Value” for the Common Dimension/Target Dimension Combinationas indicated by reference 1450. Next, the non-Time non-editable value(s)are incremented by the “Cell Data Value”, as indicated by reference1452. A check is made to determine if there are any more non-Time TargetDimension Combinations to consider, as indicated by reference 1440. Ifno, then the process for calculating non-time allocation parameters 1400terminates or ends as indicated by reference 1470, and control is returnto the calling process or function. If yes, then the process 1400considers the next non-Time Target Dimension Combination as indicated byreference 1442 and the looping operation in step 1420 is repeated.

Referring again to FIGS. 14A and 14B, if the non-time member is editable(as determined in decision block 1442), then the process 1400 isconfigured to perform the following operations. Increment by one (1) theparameter, # of Time Editable Values, as indicated by reference 1424,and check if the “Dimension Spread Option” is set to “Spread Evenly” asindicated by reference 1426. If the option is not set to “Spread Evenly”(for example, using the Data Transformation screen as described above),then a check is made in decision block 1428 to determine if the“Dimension Spread Option” is set to the “Based on Member Properties”option. If yes, then the process 1400 is configured to read or input thedata for the “Member Property Value” associated with the “Time TargetDimension Combination”, as indicated by reference 1430. Next the process1400 increments the non-Time Target Denominator by the Member PropertyValue (read in step 1430) as indicated by reference 1432. The process1400 then checks if this was the last non-Time Target DimensionCombination as indicated by reference 1440. If yes, the process 1400ends (as indicated by reference 1470) and control returns to the processfor allocating across non-time target dimensions 1300 in FIG. 13. If no,then the process 1400 considers the next non-Time Target DimensionCombination (as indicated by reference 1442) and the looping operation(as indicated by reference 1420) is repeated.

Referring again to FIGS. 14A and 14B, if the Dimension Spread Option isnot set to Based on Member Properties (step 1428), then a check is madein decision block 1460 to determine if the Dimension Spread Option isset to “Spread Based on Existing Data”. If yes, then the process 1400 isconfigured to read or input the “Cell Data Value” from the cube for theCommon Dimension Combination/Target Dimension Combination as indicatedby reference 1462. The process 1400 then increments the non-Time TargetDenominator by the Cell Data Value, as indicated by reference 1464. Ifthe Dimension Spread Option is not set to Spread Based on Existing Data,then the process 1400 is configured to store data based on a differentmember combination. As indicated by reference 1461, the process 1400 isconfigured to read the Cell Data Value for the Different CommonDimension Combination/Target Dimension Combination, and then thenon-Time Target Denominator is incremented in step 1464 as describedabove. If the last non-time target dimension combination has beenconsidered, then the process 1400 ends (as indicated by reference 1470)and control returns to the process for allocating across non-time targetdimensions 1300 in FIG. 13.

According to an aspect, the process provides the capability to allocatedata into non-editable (leaf) cells. For example, if a user wants toallocate a value across the 12 months in a year, but Jan, Feb and Marcontain historical data that is non-editable, then the process isconfigured to calculate the data values for the non-editable cells (i.e.Jan, Feb, Mar) and subtract the data values (i.e. the sum) from thevalues to be allocated to the editable cells.

Referring back to FIG. 13, the process 1300 next loops through theNon-Time Target Dimension Combinations as indicated by reference 1334.The looping operation comprises calculating a non-time allocated valueto store in the cube, as indicated by reference 1336, and storing datain the cube as indicated by reference 1338. A process or functionconfigured to calculate a non-time allocated value for storing in thecube according to an embodiment is described in more detail below withreference to FIG. 15. After the non-time allocated value is determinedin step 1336, the process for storing data (i.e. the non-time allocatedvalue) in the cube is executed as indicated by reference 1338. Anembodiment of the process for storing data in a cube 1600 is describedabove with reference to FIG. 16. A check is made in step 1340 todetermine if there are still Non-time Target Dimension Combinations toconsider, then the next Non-time Target Dimension Combination isselected, as indicated by reference 1342, and the looping process (step1334) is repeated. Otherwise, the process for allocating data to a cubeacross non-time target dimensions 1300 terminates or ends, as indicatedby reference 1360, and control returns to the calling process, i.e. theprocess for writing data to the cube 1000 (FIG. 10).

Reference is next made to FIG. 15, which shows an embodiment of aprocess (function) or processor configured to calculate a non-timeallocated value, i.e. data, to store in the cube. The process isindicated generally by reference 1500 and comprises determining if theDimension Spread Option is set to “Spread Evenly”, as indicated byreference 1510. If the option is set to Spread Evenly, then process 1500determines the “Value to Allocate” (i.e. the data to write to the cube)as follows in step 1511:

ValueToAllocate=(ValueToProcess−non-TimeNon-EditableValues)/#non-TimeEditableValues

Next, the process for calculating the non-time allocated value to store1500 terminates or ends as indicated by reference 1540, and controlreturns to the calling process 1300 in FIG. 13.

Referring again to FIG. 15, if the dimension spread is not set to spreadevenly (as determined in decision block 1510), then the process 1500 isconfigured to check if the Dimension Spread option is set to the option“Based on Member Properties”, as indicated by decision block 1512. Ifyes, then the process 1500 is configured to read the “Member PropertyValue” for the non-Time Target Dimension Member from the cube, asindicated by reference 1514. The process 1500 then determines the “Valueto Allocate” (i.e. the data to write to the cube) as follows in step1516:

ValueToAllocate=(ValueToProcess−non-TimeNon-EditableValues)*MemberPropertyValue/non-TimeTargetDenominator

Next, the process for calculating the non-time allocated value to store1500 terminates or ends as indicated by reference 1540, and controlreturns to the calling process 1300 in FIG. 13.

Referring again to FIG. 15, if the dimension spread is not set to basedon member properties (as determined in decision block 1512), then theprocess 1500 is configured to check if the Dimension Spread option isset to the option “Spread Based on Existing Data”, as indicated bydecision block 1520. If yes, then the process 1500 is configured to readthe “Cell Data Value” for the Common Dimension Combination/TargetDimension Combination from the cube, as indicated by reference 1522. Theprocess 1500 then determines the “Value to Allocate” (i.e. the data towrite to the cube) as follows in step 1524:

ValueToAllocate=(ValueToProcess−non-TimeNon-EditableValues)*CellDataValue/non-TimeTargetDenominator

Next, the process for calculating the non-time allocated value to store1500 terminates or ends as indicated by reference 1540, and controlreturns to the calling process 1300 in FIG. 13.

If the dimension spread option is not set to Spread Based on ExistingData (as determined in decision block 1520), then the process 1500operates to calculate the non-time allocated value or data to storebased on a different member combination. As indicated by reference 1530,the next operation comprises reading or inputting the “Cell Data Value”for the Different Common Dimension/Target Dimension Combination. Nextand according to an embodiment, the Value to Allocate is calculated instep 1532 as follows:

ValueToAllocate=(ValueToProcess−NonTimeNon-EditableValues)*CellDataValue/NonTimeTargetDenominator

Next, the process for calculating the non-time allocated value to store1500 terminates or ends as indicated by reference 1540, and controlreturns to the calling process 1300 in FIG. 13.

It will be appreciated that according to an aspect, time is treated notthe same as other dimensions. For instance, time has an implicit orderof its members (e.g. January, February, March) whereas other dimensionshave no such implicit order (e.g. Widgets, Grommets, Doodads). Becauseof this, when manipulating time-related data, the following statementmakes sense; “Copy actual sales from January 2008 thru June 2008 intothe plan for January 2009 thru June 2009”.

Reference is next made to FIG. 17, which shows in flowchart form anembodiment of a process, i.e. a software process or processor configuredto copy data between time members. The process is indicated generally byreference 1700 and is called or invoked as indicated by reference 712 inFIG. 7. According to an embodiment, the process is configured to handlemultiple processes, i.e. one for each time period being processed. Theprocess for copying between time members 1700 comprises looping throughthe Common Dimension Combinations as indicated by reference 1710. Asshown, the looping operation 1710 includes looping through the SourceDimension Combinations as indicated by reference 1720. As shown, thelooping operation 1720 comprises reading or inputting the “Value toProcess” for the Common Dimension/Source Dimension Combination in step1722. Next the process 1700 calls the process for adjusting the value toprocess 900 as described above with reference to FIG. 9. Next, theprocess 1700 assigns the value to process (determined by the process900) to the parameter “Value to Store”, as indicated by reference 1726.As indicated by reference 1728, the process 1700 then calls or invokesthe process for storing data in the cube as described above withreference to FIG. 16. A check is made in step 1730 to determine if thelast source dimension combination has been considered. If there are morelast source dimension combinations to process, then the next last sourcedimension combination is selected, as indicated by reference 1732, andthe looping process (step 1720) is repeated. If all the last sourcedimension combinations have been considered, then a check is made instep 1740 to determine if there are more common dimension combinationsto consider. If yes, then the next common dimension combination isconsidered as indicated by reference 1742 and the looping operation isrepeated in 1710, as described above. Otherwise, the process for copyingdata between time members 1700 terminates or ends, as indicated byreference 1750, and control returns to the calling process or function.

It will be appreciated that according to an embodiment, the process forcopying data between time members 1700 operates to copy a single valuebetween Time leaf members for each common dimension combination. Thesingle members are selected for all Source and Target dimensions exceptfor Time, which is a non-Common dimension. This requires cell addressesto be made from Common Dimension selected member combinations togetherwith one Source dimension member for the source and one Target dimensionmember for the target of a single data value being copied. If multipleTime leaf members are selected, then the same number for both Source andTarget dimensions are provided, and the Source members are contiguousand all Target members are contiguous. According to an aspect,addressing in the process is indexed through the selected Time members.For example, if the selected Source members are “Jan, Feb, Mar” and theselected Target members are “Jul, Aug, Sep” then data will be copiedfrom Jan to Jul, Feb to Aug and Mar to Sep.

Reference is next made to FIG. 18, which shows a post processingfunction or process according to an embodiment of the invention. Thepost processing process is indicated generally by reference 1800. One ofthe operations configured for the post processing process 1800 isdeleting source data. As indicated by decision block 1810, the process1800 checks if the delete data from source has been set to TRUE. IfTRUE, then the process 1800 is configured to loop through the commondimension combinations as indicated by reference 1820. The loopingoperation 1820 is configured to loop through the source dimensioncombinations as indicated by reference 1822. As shown for the loopingoperation 1822, the process 1700 is configured to delete data for thecommon dimension combination and associated source dimensioncombination. The process 1800 checks in step 1826 to determine if thelast source dimension combination has been considered. If there are morelast source dimension combination(s) to process, then the next lastsource dimension combination is selected, as indicated by reference1828, and the looping process (step 1822) is repeated. If all the lastsource dimension combinations have been considered, then a check is madein step 1830 to determine if there are more common dimensioncombinations to consider. If yes, then the next common dimensioncombination is considered as indicated by reference 1832 and the loopingoperation is repeated in 1820, as described above. If the last commondimension combination has been considered (as determined in step 1830),then a check is made in decision block 1840 to determine if the processis called or set to generate a contra account entry. If no, then thepost processing process 1800 terminates or ends as indicated byreference 1850. If yes, then the process 1800 calls a process togenerate a contra account entry as indicated by reference 1842. Anembodiment of a process to generate a contra account is described inmore detail below with reference to FIG. 19. After the contra accountentry is generated (step 1842), the post processing process or function1800 terminates or ends, as indicated by reference 1850.

The generate contra account entry function is provided to handle anaccounting requirement where allocated data needs to be reversed in theentity from which it is being allocated. For example, if total ITdepartment costs in July are $500,000 then this amount can be allocatedacross lines of business based on the number of PCs used in each. Theallocated amounts will be stored in a special allocation account. Areversing entry is made in the IT department so the net effect of thisallocation at the total company level is zero. The reversing entry isstored in a Contra Account (which may be the same as the allocationaccount). According to an embodiment, the contra account functionalitymay be incorporated into a data process or function.

Reference is next made to FIGS. 19A and 19B, which show an embodiment ofa process to generate a contra entry. The process for generating acontra entry is indicated generally by reference 1900 and according toembodiment is called or invoked by the post processing function 1800(FIG. 18). As shown, the generate contra entry process 1900 compriseslooping through the common dimensions as indicated by reference 1910,looping through the source dimensions as indicated by reference 1920,and looping through alternate common dimension combinations as indicatedby reference 1930.

As shown in FIG. 19A, the loop through common dimensions 1910 comprisesassigning the “Leaf Members of Common Dimension Selection” to the“Alternate Common Dimension Selection” parameter, as indicated byreference 1912. After step 1912, a check is made to determine if thereare any more Common Dimension members to consider as indicated byreference 1914. If yes, then the next Common Dimension member isconsidered and the looping operation in step 1910 is repeated.

If there are no more common dimension members to consider (as determinedin step 1914), then the loop through Source Dimension members isperformed, as indicated by reference 1920. During the looping operation,the process 1900 checks if the source dimension is equal to accounts, asindicated by reference 1922. If yes, the process 1900 is configured toset the parameter “AlternateFrom Accounts Selection” to the “AccountsSelection”, and the parameter “AlternateTo Accounts Selection” is set asthe “Contra Account”, as indicated by reference 1924. After step 1924, acheck is made to determine if there are any more Source Dimensionmembers to consider as indicated by reference 1926. If yes, then thenext Source Dimension member is considered in step 1928 and the loopingoperation in step 1920 is repeated. If the source dimension is not setto Accounts (as determined in decision block 1922), then the process1900 is configured to set the parameter “Alternate Source DimensionSelection” to the “Leaf Members of Source Dimension Selection”, asindicated by reference 1923. A check then is made in step 1926 todetermine if there are any more Source Dimension members to consider. Ifyes, then the next Source Dimension member is considered in step 1928and the looping operation in step 1920 is repeated.

Referring to FIGS. 19A and 19B, if the last source dimension has beenconsidered (as determined in step 1926), then the process 1900 isconfigured to execute a looping operation through the Alternate CommonDimension Combinations, as indicated by reference 1930. As shown, thelooping operation includes an internal loop for looping throughAlternate Dimension Combinations as indicated by reference 1940. Forlooping through the Source Dimension Combinations, the process 1900reads the “Cube Value” associated with the Alternate DimensionCombinations (the loops in step 1930 and 1940) and the AlternateFromAccounts Selection, as indicated by reference 1942. Next in step 1944,the process 1900 assigns the “Cube Value” to the parameter “Cube Value”multiplied by −1, and the Cube Value parameter is written to the cubefor the Alternate Dimension Combination/Alternate To Accounts Selection,as indicated by reference 1946. After step 1946, a check is made todetermine if there are any more Source Dimension Combinations toconsider as indicated by reference 1948. If yes, then the next SourceDimension Combination is considered in step 1949 and the loopingoperation in step 1940 is repeated. If all the last source dimensioncombinations have been considered (as determined in step 1948), then acheck is made in step 1950 to determine if there are more commondimension combinations to consider. If yes, then the next commondimension combination is considered as indicated by reference 1952 andthe looping operation is repeated in 1930, as described above. If thelast common dimension combination has been considered (as determined instep 1950), then the process for generating a contra account entry 1900terminates or ends as indicated by reference 1960, and control returnsto the calling process or function, for example, the post processingfunction 1800 in FIG. 18.

In operation, the generate contra account entry option allows data to becopied back into selected Source dimension members for a single Accountmember. Because data cannot be stored into non-leaf members, theselected members for both Common and non-Account Source dimensionmembers are adjusted to include leaf members below the selected Sourcedimension members. Data in these members is then copied from the sourceaccount to the contra account.

The functionality and features associated with the server 120 (FIG. 1)and/or the client machines 110 (FIG. 1) and/or the user interfacescreens or windows (FIGS. 2 to 6) as described above and in accordancewith the embodiments may be implemented in the form of one or moresoftware objects, components, or computer programs or program modules inthe server and/or the client machines. Further, at least some or all ofthe software objects, components or modules can be hard-coded intoprocessing units and/or read only memories or other non-volatile storagemedia in the mobile communication device, server and/or other componentsor modules depicted in the drawings. The specific implementation detailsof the software objects and/or program modules will be within theknowledge and understanding of one skilled in the art.

The present invention may be embodied in other specific forms withoutdeparting from the spirit or essential characteristics thereof. Certainadaptations and modifications of the invention will be obvious to thoseskilled in the art. Therefore, the presently discussed embodiments areconsidered to be illustrative and not restrictive, the scope of theinvention being indicated by the appended claims rather than theforegoing description, and all changes which come within the meaning andrange of equivalency of the claims are therefore intended to be embracedtherein.

What is claimed is:
 1. A system for processing data in an OLAP database,said system comprising: a user interface module; a calculation engine;said user interface comprising a screen configured for specifying a dataprocess to be performed on data in the OLAP database in response to oneor more user inputs; and said calculation engine being configured tointerface to the OLAP database and execute said data process andgenerate a data process output.
 2. The system as claimed in claim 1,wherein said user interface module comprises a data transformationscreen, said data transformation screen being configured for specifyingthe data process according to one or more dimensions, wherein each ofsaid one or more dimensions comprises a characterization of data storedin the OLAP database.
 3. The system as claimed in claim 2, wherein saidone or more dimensions include one or more common dimensions and eachsaid one or more common dimensions comprises a plurality of members, andone or more non-common dimensions and each of said one or morenon-common dimensions comprises a plurality of members.
 4. The system asclaimed in claim 3, wherein said data process includes a user inputteddata value, and said calculation engine is configured to manipulate datain the OLAP database based on said inputted data value.
 5. The system asclaimed in claim 3, wherein said calculation engine is configured tomanipulate data in the OLAP database for selected common dimensionmembers based on a combination of said associated common dimensions. 6.The system as claimed in claim 3, wherein said non-common dimensionincludes one or more source-target dimensions for specifying data to bemanipulated, and said source-target dimensions comprising one or moresource members and one or more target members, wherein said one or moresource members identify data to be accessed from the OLAP database, andwherein said one or more target members identify data to be written backto the OLAP database.
 7. The system as claimed in claim 6, wherein saidsource-target dimensions comprise time-based target dimensions andnon-time based target dimensions.
 8. The system as claimed in claim 7,wherein said user interface includes a screen configured for selectingone or more of said common dimensions for a data process or one or moreof said source-target dimensions, and said screen including inputcontrols responsive to user input for selecting said one or more of saidsource members or said target members.
 9. The system as claimed in claim8, wherein said data transformation screen is configured to provide anaggregation option associated with the members of said source-targetdimension, and said aggregation option comprising one of an aggregateoperation, an average including empty values operation, an averageexcluding empty values operation, or a copy between time membersoperation.
 10. The system as claimed in claim 9, wherein said datatransformation screen is configured to provide a delete data from sourceoperation, and said delete data from source operation being responsiveto a user input.
 11. The system as claimed in claim 9, wherein said datatransformation screen is configured to provide a source data operation,and said source data operation comprising one of an increase bypercentage operation, a decrease by operation, an increase by absoluteamount operation, a decrease by absolute amount operation, or a multiplyby amount operation.
 12. The system as claimed in claim 9, wherein saiddata transformation screen is configured to provide a target data writeoperation, and said target data write operation comprising one of anoverwrite existing data operation, an add to existing data operation, ora subtract from existing data operation.
 13. The system as claimed inclaim 9, wherein said data transformation screen is configured toprovide a time spread operation for allocating data along a time targetdimension, and said time spread operation comprising one of a storevalue to leaf members operation, a spread based on existing dataoperation, a spread based on data in a member property dimension, or aspread evenly operation.
 14. The system as claimed in claim 9, whereinsaid data transformation screen is configured to provide a data spreadoperation for allocating data along a non-time target dimension, andsaid data spread operation comprising one of a store value to leafmembers operation with no spread, a spread based on existing dataoperation, a spread based on data in a member property dimension, or aspread evenly operation.
 15. The system as claimed in claim 14, whereinsaid data spread operation is configured for a data value specified by auser.
 16. The system as claimed in claim 2, wherein said user interfaceincludes a processing exception screen, and said processing exceptionscreen being configured to provide a processing options for one or moreprocessing exceptions.
 17. The system as claimed in claim 16, whereinsaid processing exceptions comprise a spread on zero condition, and saidprocessing options comprise one of a spread evenly without a warningoperation, a spread evenly with a warning operation, a skip membercombination without a warning operation, a skip member combination witha warning operation, or an abort process operation.
 18. The system asclaimed in claim 16, wherein said processing exceptions comprise adimension spread invalid value handing condition, and said processingoptions comprise one of a spread evenly without a warning operation, aspread evenly with a warning operation, a skip member combinationwithout a warning operation, a skip member combination with a warningoperation, or an abort process operation.
 19. The system as claimed inclaim 2, wherein said calculation engine is configured to execute one ormore of a store data based on existing data operation, a store singledata value operation, or an allocate single data value operation. 20.The system as claimed in claim 2, wherein said calculation engine isconfigured to generate a contra account entry, and said datatransformation screen is configured for a user to specify data for saidcontra account entry.
 21. A computer-implemented method for processingdata stored in an OLAP cube, said method comprising the steps of:characterizing data in the OLAP cube according to a common dimension,and said common dimension comprising one or more common dimensionmembers; characterizing data in the OLAP cube according to a non-commondimension, and said non-common dimension comprising one or morenon-common dimension members; specifying a combination comprisingselected common dimension members and selected non-common dimensionmembers; selecting cells in the OLAP cube based on said specifiedcombination, and reading data from said selected cells; applying aprocessing operation to the data read from said selected cells; andwriting data from said processing operation back to the OLAP cube. 22.The method as claimed in claim 21, wherein said non-common dimensionsinclude one or more of a source-target dimensions, and saidsource-target dimensions comprise one or more source members and one ormore target members, wherein said one or more source members identifydata to be accessed from the OLAP database, and wherein said one or moretarget members identify data to be written back to the OLAP database.23. The method as claimed in claim 22, wherein said processing operationcomprises one of an allocate based on existing operation, a store singledata value operation, or an allocate single data value operation. 24.The method as claimed in claim 22, wherein said source-target dimensionscomprise time-based target dimensions and non-time based targetdimensions.
 25. The method as claimed in claim 21, wherein said step ofwriting data comprises one of overwriting existing data in the OLAP cubewith data from said processing operation, adding data from saidprocessing operation to existing data in the OLAP cube, or subtractingdata from said processing operation to existing data in the OLAP cube.26. A computer program product for processing data in an OLAP database,said computer program product comprising: a storage medium configured tostore computer readable instructions; said computer readableinstructions including instructions for, characterizing data in the OLAPcube according to a common dimension, and said common dimensioncomprising one or more common dimension members; characterizing data inthe OLAP cube according to a non-common dimension, and said non-commondimension comprising one or more non-common dimension members;specifying a combination comprising selected common dimension membersand selected non-common dimension members; selecting cells in the OLAPcube based on said specified combination, and reading data from saidselected cells; applying a processing operation to the data read fromsaid selected cells; and writing data from said processing operationback to the OLAP cube.